package com.upb.webserver.dao.mapper;

import com.upb.webserver.dao.entity.TbDeveloper;
import com.upb.webserver.dao.entity.TbDeveloperWithAppID;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;
import org.apache.ibatis.annotations.UpdateProvider;
import com.upb.webserver.dao.entity.TbDeveloperExample;
import java.util.List;
import java.util.Optional;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import javax.ws.rs.PATCH;

public interface TbDeveloperMapper {

    @Select("select * from tb_developer where MD5(CONCAT(#{pid,jdbcType=VARCHAR},'##$$##',account)) in( select related_key from tb_security where appid=#{appid,jdbcType=VARCHAR})")
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    TbDeveloper getDeveloperByAppID(@Param("pid") String pid, @Param("appid") String appid);

    @Select({ "<script>", "select", TbDeveloperSqlProvider.ALL_COLUMN_FIELDS, "from tb_developer", "where id in", "<foreach collection='developerIdList' item='developerId' open='(' separator=',' close=')'>", "#{developerId}", "</foreach>", "</script>" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    List<TbDeveloper> listByDeveloperIds(@Param("developerIdList") List<Integer> developerIdList);

    @Select({ "select", TbDeveloperSqlProvider.ALL_COLUMN_FIELDS, "from tb_developer", "where account = #{account,jdbcType=VARCHAR}" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    TbDeveloper selectByAccount(@Param("account") String account);

    @Select({ "select", TbDeveloperSqlProvider.ALL_COLUMN_FIELDS, "from tb_developer", "where mobile = #{mobile,jdbcType=BIGINT}" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    TbDeveloper selectByMobile(@Param("mobile") long mobile);

    @Select({ "select", TbDeveloperSqlProvider.ALL_COLUMN_FIELDS, "from tb_developer", "where email = #{email,jdbcType=VARCHAR}" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    TbDeveloper selectByEmail(@Param("email") String email);

    @SelectProvider(type = TbDeveloperSqlProvider.class, method = "selectWithAppID")
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR), @Result(column = "appid", property = "appid", jdbcType = JdbcType.VARCHAR), @Result(column = "security", property = "security", jdbcType = JdbcType.VARCHAR) })
    List<TbDeveloperWithAppID> selectWithAppID(TbDeveloperExample example);

    @Select({ "select", "id, account, password, role_id, real_name, email, mobile, address, id_card_front, ", "id_card_back, login_fail_time, status, proof_status, create_from_platform, gmt_create, ", "gmt_modified, description", ",appid,security", "from (select tb_developer.*,appid,security from tb_developer left join tb_security on related_key=MD5(concat('0','##$$##',account)))TMP", "where id = #{id,jdbcType=INTEGER}" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR), @Result(column = "security", property = "security", jdbcType = JdbcType.VARCHAR) })
    TbDeveloperWithAppID selectByPrimaryKeyWithAppId(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @SelectProvider(type = TbDeveloperSqlProvider.class, method = "countByExample")
    long countByExample(TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @DeleteProvider(type = TbDeveloperSqlProvider.class, method = "deleteByExample")
    int deleteByExample(TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Delete({ "delete from tb_developer", "where id = #{id,jdbcType=INTEGER}" })
    int deleteByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Insert({ "insert into tb_developer (account, password, ", "role_id, real_name, ", "email, mobile, address, ", "id_card_front, id_card_back, ", "login_fail_time, status, ", "proof_status, create_from_platform, ", "gmt_create, gmt_modified, ", "description)", "values (#{account,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, ", "#{roleId,jdbcType=INTEGER}, #{realName,jdbcType=VARCHAR}, ", "#{email,jdbcType=VARCHAR}, #{mobile,jdbcType=BIGINT}, #{address,jdbcType=VARCHAR}, ", "#{idCardFront,jdbcType=VARCHAR}, #{idCardBack,jdbcType=VARCHAR}, ", "#{loginFailTime,jdbcType=INTEGER}, #{status,jdbcType=TINYINT}, ", "#{proofStatus,jdbcType=TINYINT}, #{createFromPlatform,jdbcType=TINYINT}, ", "#{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModified,jdbcType=TIMESTAMP}, ", "#{description,jdbcType=LONGVARCHAR})" })
    @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Integer.class)
    int insert(TbDeveloper record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @InsertProvider(type = TbDeveloperSqlProvider.class, method = "insertSelective")
    @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Integer.class)
    int insertSelective(TbDeveloper record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @SelectProvider(type = TbDeveloperSqlProvider.class, method = "selectByExampleWithBLOBs")
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    List<TbDeveloper> selectByExampleWithBLOBs(TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @SelectProvider(type = TbDeveloperSqlProvider.class, method = "selectByExample")
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP) })
    List<TbDeveloper> selectByExample(TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Select({ "select", "id, account, password, role_id, real_name, email, mobile, address, id_card_front, ", "id_card_back, login_fail_time, status, proof_status, create_from_platform, gmt_create, ", "gmt_modified, description", "from tb_developer", "where id = #{id,jdbcType=INTEGER}" })
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    TbDeveloper selectByPrimaryKey(Integer id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @UpdateProvider(type = TbDeveloperSqlProvider.class, method = "updateByExampleSelective")
    int updateByExampleSelective(@Param("record") TbDeveloper record, @Param("example") TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @UpdateProvider(type = TbDeveloperSqlProvider.class, method = "updateByExampleWithBLOBs")
    int updateByExampleWithBLOBs(@Param("record") TbDeveloper record, @Param("example") TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @UpdateProvider(type = TbDeveloperSqlProvider.class, method = "updateByExample")
    int updateByExample(@Param("record") TbDeveloper record, @Param("example") TbDeveloperExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @UpdateProvider(type = TbDeveloperSqlProvider.class, method = "updateByPrimaryKeySelective")
    int updateByPrimaryKeySelective(TbDeveloper record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Update({ "update tb_developer", "set account = #{account,jdbcType=VARCHAR},", "password = #{password,jdbcType=VARCHAR},", "role_id = #{roleId,jdbcType=INTEGER},", "real_name = #{realName,jdbcType=VARCHAR},", "email = #{email,jdbcType=VARCHAR},", "mobile = #{mobile,jdbcType=BIGINT},", "address = #{address,jdbcType=VARCHAR},", "id_card_front = #{idCardFront,jdbcType=VARCHAR},", "id_card_back = #{idCardBack,jdbcType=VARCHAR},", "login_fail_time = #{loginFailTime,jdbcType=INTEGER},", "status = #{status,jdbcType=TINYINT},", "proof_status = #{proofStatus,jdbcType=TINYINT},", "create_from_platform = #{createFromPlatform,jdbcType=TINYINT},", "gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},", "gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},", "description = #{description,jdbcType=LONGVARCHAR}", "where id = #{id,jdbcType=INTEGER}" })
    int updateByPrimaryKeyWithBLOBs(TbDeveloper record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Update({ "update tb_developer", "set account = #{account,jdbcType=VARCHAR},", "password = #{password,jdbcType=VARCHAR},", "role_id = #{roleId,jdbcType=INTEGER},", "real_name = #{realName,jdbcType=VARCHAR},", "email = #{email,jdbcType=VARCHAR},", "mobile = #{mobile,jdbcType=BIGINT},", "address = #{address,jdbcType=VARCHAR},", "id_card_front = #{idCardFront,jdbcType=VARCHAR},", "id_card_back = #{idCardBack,jdbcType=VARCHAR},", "login_fail_time = #{loginFailTime,jdbcType=INTEGER},", "status = #{status,jdbcType=TINYINT},", "proof_status = #{proofStatus,jdbcType=TINYINT},", "create_from_platform = #{createFromPlatform,jdbcType=TINYINT},", "gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},", "gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}", "where id = #{id,jdbcType=INTEGER}" })
    int updateByPrimaryKey(TbDeveloper record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    @Insert({ "<script>", "insert into tb_developer (account, ", "password, role_id, ", "real_name, email, ", "mobile, address, ", "id_card_front, id_card_back, ", "login_fail_time, status, ", "proof_status, create_from_platform, ", "gmt_create, gmt_modified, ", "description)", "values<foreach collection=\"list\" item=\"detail\" index=\"index\" separator=\",\">(#{detail.account,jdbcType=VARCHAR}, ", "#{detail.password,jdbcType=VARCHAR}, #{detail.roleId,jdbcType=INTEGER}, ", "#{detail.realName,jdbcType=VARCHAR}, #{detail.email,jdbcType=VARCHAR}, ", "#{detail.mobile,jdbcType=BIGINT}, #{detail.address,jdbcType=VARCHAR}, ", "#{detail.idCardFront,jdbcType=VARCHAR}, #{detail.idCardBack,jdbcType=VARCHAR}, ", "#{detail.loginFailTime,jdbcType=INTEGER}, #{detail.status,jdbcType=TINYINT}, ", "#{detail.proofStatus,jdbcType=TINYINT}, #{detail.createFromPlatform,jdbcType=TINYINT}, ", "#{detail.gmtCreate,jdbcType=TIMESTAMP}, #{detail.gmtModified,jdbcType=TIMESTAMP}, ", "#{detail.description,jdbcType=LONGVARCHAR})</foreach></script>" })
    int batchInsert(List<TbDeveloper> list);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table tb_developer
     *
     * @mbg.generated
     */
    @SelectProvider(type = TbDeveloperSqlProvider.class, method = "getOneByExample")
    @Results({ @Result(column = "id", property = "id", jdbcType = JdbcType.INTEGER, id = true), @Result(column = "account", property = "account", jdbcType = JdbcType.VARCHAR), @Result(column = "password", property = "password", jdbcType = JdbcType.VARCHAR), @Result(column = "role_id", property = "roleId", jdbcType = JdbcType.INTEGER), @Result(column = "real_name", property = "realName", jdbcType = JdbcType.VARCHAR), @Result(column = "email", property = "email", jdbcType = JdbcType.VARCHAR), @Result(column = "mobile", property = "mobile", jdbcType = JdbcType.BIGINT), @Result(column = "address", property = "address", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_front", property = "idCardFront", jdbcType = JdbcType.VARCHAR), @Result(column = "id_card_back", property = "idCardBack", jdbcType = JdbcType.VARCHAR), @Result(column = "login_fail_time", property = "loginFailTime", jdbcType = JdbcType.INTEGER), @Result(column = "status", property = "status", jdbcType = JdbcType.TINYINT), @Result(column = "proof_status", property = "proofStatus", jdbcType = JdbcType.TINYINT), @Result(column = "create_from_platform", property = "createFromPlatform", jdbcType = JdbcType.TINYINT), @Result(column = "gmt_create", property = "gmtCreate", jdbcType = JdbcType.TIMESTAMP), @Result(column = "gmt_modified", property = "gmtModified", jdbcType = JdbcType.TIMESTAMP), @Result(column = "description", property = "description", jdbcType = JdbcType.LONGVARCHAR) })
    Optional<TbDeveloper> getOneByExample(TbDeveloperExample example);
}
